package org.aerie.forest.extensions.datatransmit.brick.exportdata;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

/**
 * @description 导出数据【转成excel的工作簿】
 *
 * @author quark
 * @organization aerie
 * @date 2020年3月7日 下午2:44:53
 * @version 1.2.0
 */
public final class DerivedData {

	/**
	 * @description 类型
	 * 
	 * @author quark
	 * @date 2020年3月7日 下午2:48:59
	 */
	private Class<? extends DerivedDataLump> zclass;

	/**
	 * @description 数据块
	 * 
	 * @author quark
	 * @date 2020年3月7日 下午2:50:34
	 */
	private List<? extends DerivedDataLump> derivedDatas;

	/**
	 * Construction
	 * 
	 * @param derivedDatas 数据块
	 *
	 * @date 2020年3月7日 下午2:50:42
	 */
	public DerivedData(List<? extends DerivedDataLump> derivedDatas) {
		super();
		this.derivedDatas = derivedDatas;
	}

	/**
	 * Construction
	 * 
	 * @param zclass       类型
	 * @param derivedDatas 数据块
	 *
	 * @date 2020年3月7日 下午2:53:50
	 */
	public DerivedData(Class<? extends DerivedDataLump> zclass, List<? extends DerivedDataLump> derivedDatas) {
		super();
		this.zclass = zclass;
		this.derivedDatas = derivedDatas;
	}

	/**
	 * @description 获得类型
	 * @return 类型
	 *
	 * @date 2020年3月7日 下午3:09:01
	 */
	public Class<? extends DerivedDataLump> getZclass() {
		return zclass;
	}

	/**
	 * @description 获得数据块
	 * @return 数据块
	 *
	 * @date 2020年3月7日 下午3:12:57
	 */

	public List<? extends DerivedDataLump> getDerivedDatas() {
		return derivedDatas;
	}

	public void ss() {
		try {
			Field listField = DerivedData.class.getDeclaredField("derivedDatas");
			System.out.println(listField.getGenericType());
			// 获取 list 字段的泛型参数
			ParameterizedType listGenericType = (ParameterizedType) listField.getGenericType();
			Type[] listActualTypeArguments = listGenericType.getActualTypeArguments();
			System.out.println(listActualTypeArguments[listActualTypeArguments.length - 1]);
			for (int i = 0; i < listActualTypeArguments.length; i++) {
				System.out.println(listActualTypeArguments[i]);
			}
		} catch (NoSuchFieldException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}
